#ifndef OBSERWOWANY_H
#define OBSERWOWANY_H

#include "Obserwator.h"
#include <list>

using namespace std;

class Obserwowany {
private:
  list<Obserwator*> obserwatorzy;
public:
  virtual ~Obserwowany() { }
  virtual void attach(Obserwator* ob) { obserwatorzy.push_back(ob); }
  virtual void detach(Obserwator* ob) { obserwatorzy.remove(ob); }
  virtual void notify() {
    list<Obserwator*>::iterator it;
    for(it = obserwatorzy.begin(); it != obserwatorzy.end(); ++it) {
      (*it)->update(this);
    }
  }
};

#endif // OBSERWOWANY_H